<?php

declare(strict_types=1);

namespace App\Providers;

use App\Events\DistributionPosterEvent;
use App\Events\DistributionPosterProductEvent;
use App\Events\Sms\VerifyCodeEvent;
use App\Listeners\DistributionPosterListener;
use App\Listeners\DistributionPosterProductListener;
use App\Listeners\DistributorEventSubscriber;
use App\Listeners\OrderEventSubscriber;
use App\Listeners\OrderTraceSubscriber;
use App\Listeners\Sms\VerifyCodeListener;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Event;

class EventServiceProvider extends ServiceProvider
{
    /**
     * The event listener mappings for the application.
     *
     * @var array
     */
    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ],
        VerifyCodeEvent::class => [
            VerifyCodeListener::class,
        ],
        DistributionPosterEvent::class => [
            DistributionPosterListener::class,
        ],
        DistributionPosterProductEvent::class => [
            DistributionPosterProductListener::class,
        ],
    ];

    protected $subscribe = [
        OrderEventSubscriber::class,
        OrderTraceSubscriber::class,
        DistributorEventSubscriber::class,
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();
    }
}
